https://docs.openstack.org/ocata/install-guide-ubuntu/overview.html
最基礎的Openstack架構,需要2個Host,分別是一個controller跟一個compute node。
controller負責掌控整個Openstack,操作、控制各個Host,並具有網路管理的功能。
在前幾個版本的Openstack裡,Networking跟controller是分開的。
在目前這個版本[Ocata],已經將Networking的部分併入。
要launch一個VM(instance),最少需要controller與compute的幫忙。
Controller
The controller node runs the Identity service, Image service, management portions of Compute, management portion of Networking, various Networking agents, and the Dashboard. It also includes supporting services such as an SQL database, message queue, and NTP.
Optionally, the controller node runs portions of the Block Storage, Object Storage, Orchestration, and Telemetry services.
The controller node requires a minimum of two network interfaces.
Controller上面有 "身分認證的服務"(Identity Service)、"映像檔管理"(Image Service)、"網路管理(Networking Service)"、"運算資源管理(Compute Service)"、Dashboard。
另外,他還有包含了像是SQL DB、Message queue(EX: Rabbit MQ)等服務。
DashBoard是一個提供web介面的服務,可以透過WEB UI介面來操控整的Openstack。
由於網路架構的問題,Openstack的controller跟compute,都需要2張網卡。
Compute
The compute node runs the hypervisor portion of Compute that operates instances. By default, Compute uses the KVM hypervisor. The compute node also runs a Networking service agent that connects instances to virtual networks and provides firewalling services to instances via security groups.
You can deploy more than one compute node. Each node requires a minimum of two network interfaces.
Compute上,提供了hypervisor的服務。
Q :
什麼是Hypervisor呢?
A :
在compute node上面,我們需要將我們的硬體資源虛擬化,方便切割、規劃,才能供給VM使用。那Host是怎麼將自己的硬體資源虛擬化,讓instance只用呢?
是使用了一個叫做 Hypervisor 的程式實現的。
根據 Hypervisor 的施行方式與位置,虛擬化又分為2種:
1型虚拟化
Hypervisor 直接安装在Host上,多個VM在 Hypervisor 上運作。Hypervisor 實現方式一般是一个特殊的 Linux 系统。Xen 和 VMWare 的 ESXi 都屬於這類型。
2型虚拟化
Host上首先安装一般的OS,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作為 OS 上的一个程式運行,對VM進行管理。KVM、VirtualBox 和 VMWare Workstation 都屬於這類型。
理論上:
1型虛擬化一般硬體虛擬化功能會特別優化,性能上會較好。
2型虛擬化因為是在普通的OS上,較靈活。
在Compute node裡,你可以選擇是否要用KVM(預設)來做Hypervisor。同時也提供了一些networking的服務,因為在上頭的VM需要"對外網路"與"跟controller"的連接。
並根據security group提供一些基礎安全防護。
因此,在compute node上也需要2張網卡。
KVM
KVM 全名 Kernel-Based Virtual Machine。也就是说 KVM 基於 Linux Kernel的VM。
KVM有一個module叫 kvm.ko,只用於管理 CPU 和内存。
那 IO 的虛擬化,比如儲存和網路設備由誰實現呢?
交给 Linux kernel和Qemu来。
做為一個 Hypervisor,KVM 只關注虛擬機調度和内存管理。IO 任務交给 Linux kernel和 Qemu。
Libvirt
大家應該在查KVM時,大多會看到的關鍵字。
Libvirt 是啥?
簡單說就是 KVM 的管理工具。
Libvirt 除了能管理 KVM 这种 Hypervisor,還能管理 Xen,VirtualBox 等。
OpenStack 底層也使用 Libvirt,所以要學。
Libvirt 包含 3 个东西:backend daemon process、 libvirtd、API 库和命令行工具 virsh
libvirtd是服务程序,接收和处理 API 请求;
API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;
virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。
打到快睡著了 ZZZZZZZZ